package cn.com.huzo.service.purchase;

import cn.com.huzo.model.entities.purchase.NotesPayabledHeaderEntity;
import huzofw.service.GenericManager;
import java.util.Map;

/**
 * 对账单管理服务对象接口。
 *
 * @author 吴旭
 */
public interface NotesPayabledHeaderManager extends GenericManager<NotesPayabledHeaderEntity, Long> {

    /**
     * 根据给定的条件（headerId+页面信息）信息，得到主表和3个明细表信息
     *
     * @param criterion 采购对账单标识、当前用户、采购对账单审核工作流标识等
     * @return 主表和3个明细表信息
     * @throws java.lang.Exception
     */
    Map<String, Object> fetchByHeaderKey(Map<String, Object> criterion) throws Exception;

    /**
     * 得到新的单据号（根据规则自动生成）
     * <p>
     * @return @throws java.lang.Exception
     */
    String fetchNewBillNo() throws Exception;

    /**
     * 根据给定的条件（headerId）信息，得到导出excel信息
     *
     * @param headerId 对账单标识
     * @param styleNoFlag 有款、无款区分
     * @return 主表和明细表信息
     * @throws java.lang.Exception
     */
    Map<String, Object> fetchExportDataByHeaderId(Long headerId, Integer styleNoFlag) throws Exception;

    /**
     * 根据给定的条件（headerId）信息，得到导出excel信息
     *
     * @param headerId 对账单标识
     * @param styleNoFlag 有款、无款区分
     * @return 主表和明细表信息
     * @throws java.lang.Exception
     */
    Map<String, Object> fetchExportDataWithStyleNoByHeaderId(Long headerId, Integer styleNoFlag) throws Exception;
}
